1. Field of the Invention
The present invention relates to fibre channel systems, and more particularly, to using programmable pseudo virtual lanes in fibre channel switches.
2. Background of the Invention
Fibre channel is a set of American National Standard Institute (ANSI) standards, which provide a serial transmission protocol for storage and network protocols such as HIPPI, SCSI, IP, ATM and others. Fibre channel provides an input/output interface to meet the requirements of both channel and network users.
Fibre channel supports three different topologies: point-to-point, arbitrated loop and fibre channel fabric. The point-to-point topology attaches two devices directly. The arbitrated loop topology attaches devices in a loop. The fibre channel fabric topology attaches host systems directly to a fabric, which are then connected to multiple devices. The fibre channel fabric topology allows several media types to be interconnected.
Fibre channel is a closed system that relies on multiple ports to exchange information on attributes and characteristics to determine if the ports can operate together. If the ports can work together, they define the criteria under which they communicate.
In fibre channel, a path is established between two nodes where the path's primary task is to transport data from one point to another at high speed with low latency, performing only simple error detection in hardware.
Fibre channel fabric devices include a node port or “N_Port” that manages fabric connections. The N_port establishes a connection to a fabric element (e.g., a switch) having a fabric port or F_port. Fabric elements include the intelligence to handle routing, error detection, recovery, and similar management functions.
A fibre channel switch is a multi-port device where each port manages a simple point-to-point connection between itself and its attached system. Each port can be attached to a server, peripheral, I/O subsystem, bridge, hub, router, or even another switch. A switch receives messages from one port and automatically routes it to another port. Multiple calls or data transfers happen concurrently through the multi-port fibre channel switch.
Fibre channel switches use memory buffers to hold frames received and sent across a network. Associated with these buffers are credits, which are the number of frames that a buffer can hold per fabric port.
Often a fibre channel switch is coupled between devices that use varying data rates to transfer data. The mis-match in the data transfer rates can result in inefficient use of the overall bandwidth. An illustration of this problem is shown in FIG. 2. FIG. 2 shows switches 207 and 209 coupled by a 10 G link 208. Host systems 203 and 202 are coupled to switch 207 by 2 G links 204 and 205, respectively. Host system 201 is coupled by a 1 G link 206. A target 213 is coupled to switch 209 by a 1 G link 210, while targets 214 and 215 are coupled by 2 G links 211 and 212, respectively.
As is shown in FIG. 2, host 203 can send data at 2 G to target 213 that can receive data at 1 G. Since target 213 receives data at a lower rate that can overfill the receive buffers in switch 209 resulting in bandwidth degradation. One way to avoid this problem is to use virtual lanes.
Fibre channel switches use “virtual lanes” to allocate receive credits at an E_port or N_port. Virtual lanes are a portion of the data path between a source and destination port. Credits are allocated into groups so that a fast device sending data to a slow device does not consume all of the receive credits and cause bandwidth degradation.
The fibre channel standard does not provide any guidance as to how virtual lanes should be assigned or programmed.
Conventional switches use a destination identifier (“D_ID” a primitive defined by fibre channel standards) to assign virtual lanes. This by itself is not very efficient or adaptive because fabric topology can vary and D_ID may not be the best parameter for virtual lane assignment.
Therefore, what is required is a process and system that efficiently selects virtual lanes to maximize bandwidth based on fabric topology.